package com.peycash.monitoring.servicio.impl;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.peycash.monitoring.ClienteDTO;
import com.peycash.monitoring.dominio.Cliente;
import com.peycash.monitoring.persistencia.PersistenciaException;
import com.peycash.monitoring.persistencia.dao.ClienteDAO;
import com.peycash.monitoring.servicio.ClienteServicio;
import com.peycash.monitoring.servicio.ServicioException;

@Service
public class ClienteServicioImpl implements ClienteServicio{

	@Autowired
	private ClienteDAO daoCliente;
	
	@Override
	@Transactional(rollbackFor={ServicioException.class, PersistenciaException.class})
	public void updateStatusPendientes(BigDecimal id) throws ServicioException{
		try{
			daoCliente.updateStatusPendiente(id);
		}catch(PersistenciaException e){
			throw new ServicioException("Error en updateStatusPendientes:"+e.getMessage(), e);
		}
	}
	
	@Override
	@Transactional(readOnly=true)
	public List<ClienteDTO> findPendientes() throws ServicioException{
		try{
			List<Cliente> list = daoCliente.findPendientes();
			List<ClienteDTO> listaDTO = new ArrayList<ClienteDTO>();
			for(Cliente c : list){
				ClienteDTO dto = new ClienteDTO();
				dto.setId(c.getIdCliente());
				dto.setNoCel(c.getNumCel());
				listaDTO.add(dto);
			}
			return listaDTO;
		}catch(PersistenciaException e){
			throw new ServicioException("Error en findPendientes:"+e.getMessage(), e);
		}
	}
	
}
